{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from __future__ import division, print_function"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 2,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "import mmd"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "## Generate fake data\n",
    "As an example, let's regress 1d normals to their mean."
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "We're storing the data as a list of `n` numpy arrays, each of size `n_samp x dim` (with `dim == 1`)."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 3,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "n = 500\n",
    "mean = np.random.normal(0, 10, size=n)\n",
    "var = np.random.gamma(5, size=n)\n",
    "n_samp = np.random.randint(10, 500, size=n)\n",
    "samps = [np.random.normal(m, v, size=s)[:, np.newaxis]\n",
    "         for m, v, s in zip(mean, var, n_samp)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 4,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "# this gives us a progress bar for MMD computations\n",
    "from mmd.utils import show_progress\n",
    "show_progress('mmd.mmd.progress')"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 5,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Get the median pairwise squared distance in the aggregate sample,\n",
    "# as a heuristic for choosing the bandwidth of the inner RBF kernel.\n",
    "from sklearn.metrics.pairwise import euclidean_distances\n",
    "sub = np.vstack(samps)\n",
    "sub = sub[np.random.choice(sub.shape[0], min(1000, sub.shape[0]), replace=False)]\n",
    "D2 = euclidean_distances(sub, squared=True)\n",
    "med_2 = np.median(D2[np.triu_indices_from(D2, k=1)], overwrite_input=True)\n",
    "del sub, D2"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 6,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "from sklearn import cross_validation as cv\n",
    "from sklearn.kernel_ridge import KernelRidge\n",
    "import sys"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "l1_gamma_mults = np.array([1/16, 1/4, 1, 4])  # Could expand these, but it's quicker if you don't. :)\n",
    "l1_gammas = l1_gamma_mults * med_2"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now we'll get the $\\mathrm{MMD}^2$ values for each of the proposed gammas.\n",
    "(This is maybe somewhat faster than doing it independently, but I haven't\n",
    "really tested that; if it's causing memory issues or anything, do them separately.)\n",
    "\n",
    "We also want to save the \"diagonal\" values (the mean map kernel between a set\n",
    "and itself), so we can compute the MMD to test values later without recomputing\n",
    "those."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 8,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "RBF mean map kernel:\n",
      " 125,250 of 125,250 (100%) |###########################################################| Time: 0:02:11\n",
      "\n"
     ]
    }
   ],
   "source": [
    "mmds, mmk_diags = mmd.rbf_mmd(samps, gammas=l1_gammas, squared=True, n_jobs=40, ret_X_diag=True)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, we want to turn this into a kernel and evaluate the regression\n",
    "for each of the other hyperparameter values.\n",
    "\n",
    "We'll just do a 3d grid search here.\n",
    "\n",
    "Ideally, this would be:\n",
    "\n",
    "- Parallelized. Scikit-learn's tools for this want to pickle the kernels, which is a non-starter here. It'd take some coding to work around that.\n",
    "- Not a grid search. It's harder to get away from grid search for the l1 gamma because it's kind of expensive, but you could definitely do a randomized search (or some kind of actual optimization) for the l2 gamma + alpha parameters.\n",
    "- Really, KernelRidge should support leave-one-out CV across a bunch of alphas, like RidgeCV. [Supposedly this isn't too hard](https://github.com/scikit-learn/scikit-learn/pull/3942#issuecomment-179570126) but I haven't spent the time to try to figure it out, and apparently neither has anyone else. This would help with the parallelization issue."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# Choose parameters for the hyperparameter search\n",
    "k_fold = list(cv.KFold(n, n_folds=3, shuffle=True))\n",
    "\n",
    "l2_gamma_mults = np.array([1/4, 1, 4, 8])\n",
    "alphas = np.array([1/128, 1/64, 1/16, 1/4, 1, 4])\n",
    "\n",
    "scores = np.empty((l1_gamma_mults.size, l2_gamma_mults.size, alphas.size, len(k_fold)))\n",
    "scores.fill(np.nan)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "l1 gamma 1 / 4: 7.562\n",
      "\tl2 gamma 1 / 4: 0.01677\n",
      "\t\talpha 1 / 6: 0.0078125 \t [ 0.9253348   0.91112741  0.92746963]\n",
      "\t\talpha 2 / 6: 0.015625 \t [ 0.86428587  0.83874947  0.87861644]\n",
      "\t\talpha 3 / 6: 0.0625 \t [ 0.64522929  0.60369467  0.67002685]\n",
      "\t\talpha 4 / 6: 0.25 \t [ 0.33072326  0.29631131  0.34359958]\n",
      "\t\talpha 5 / 6: 1.0 \t [ 0.10770497  0.08482278  0.11357141]\n",
      "\t\talpha 6 / 6: 4.0 \t [ 0.02324835  0.005496    0.02778346]\n",
      "\tl2 gamma 2 / 4: 0.06708\n",
      "\t\talpha 1 / 6: 0.0078125 \t [ 0.98203002  0.9805339   0.96849574]\n",
      "\t\talpha 2 / 6: 0.015625 \t [ 0.96198555  0.95618912  0.95410813]\n",
      "\t\talpha 3 / 6: 0.0625 \t [ 0.86382546  0.83823775  0.87833251]\n",
      "\t\talpha 4 / 6: 0.25 \t [ 0.64438717  0.60291489  0.66924618]\n",
      "\t\talpha 5 / 6: 1.0 \t [ 0.32986607  0.29558004  0.34272459]\n",
      "\t\talpha 6 / 6: 4.0 \t [ 0.10734844  0.08462546  0.11317859]\n",
      "\tl2 gamma 3 / 4: 0.2683\n",
      "\t\talpha 1 / 6: 0.0078125 \t [ 0.99543429  0.99579355  0.9813862 ]\n",
      "\t\talpha 2 / 6: 0.015625 \t [ 0.99145241  0.99138094  0.97655579]\n",
      "\t\talpha 3 / 6: 0.0625 \t [ 0.9612365   0.95532443  0.95390085]\n",
      "\t\talpha 4 / 6: 0.25 \t [ 0.86194888  0.8361614   0.87716608]\n",
      "\t\talpha 5 / 6: 1.0 \t [ 0.64100342  0.59978763  0.66610057]\n",
      "\t\talpha 6 / 6: 4.0 \t [ 0.32645335  0.29266772  0.33923855]\n",
      "\tl2 gamma 4 / 4: 0.5366\n",
      "\t\talpha 1 / 6: 0.0078125 \t [ 0.99660695  0.9970905   0.98441303]\n",
      "\t\talpha 2 / 6: 0.015625 \t [ 0.9952733   0.99556481  0.98137235]\n",
      "\t\talpha 3 / 6: 0.0625 \t [ 0.9809779   0.97938433  0.96832703]\n",
      "\t\talpha 4 / 6: 0.25 \t [ 0.92204166  0.90731807  0.9260111 ]\n",
      "\t\talpha 5 / 6: 1.0 \t [ 0.76536657  0.7292215   0.78998224]\n",
      "\t\talpha 6 / 6: 4.0 \t [ 0.48016052  0.44116842  0.4998896 ]\n",
      "l1 gamma 2 / 4: 30.25\n",
      "\tl2 gamma 1 / 4: 0.01013\n",
      "\t\talpha 1 / 6: 0.0078125 \t [ 0.79933156  0.76548461  0.8205987 ]\n",
      "\t\talpha 2 / 6: 0.015625 \t [ 0.68228314  0.64153397  0.70724916]\n",
      "\t\talpha 3 / 6: 0.0625 \t [ 0.37242102  0.33629039  0.38694699]\n",
      "\t\talpha 4 / 6: 0.25 \t [ 0.1284564   0.10438441  0.13474427]\n",
      "\t\talpha 5 / 6: 1.0 \t [ 0.02964356  0.01138949  0.03426635]\n",
      "\t\talpha 6 / 6: 4.0 \t [ 0.001045   -0.01533853  0.00537696]\n",
      "\tl2 gamma 2 / 4: 0.04052\n",
      "\t\talpha 1 / 6: 0.0078125 \t [ 0.93532218  0.92254241  0.93446721]\n",
      "\t\talpha 2 / 6: 0.015625 \t [ 0.88182687  0.85869737  0.89289967]\n",
      "\t\talpha 3 / 6: 0.0625 \t [ 0.68199126  0.64126241  0.70698824]\n",
      "\t\talpha 4 / 6: 0.25 \t [ 0.37209429  0.33600907  0.38661566]\n",
      "\t\talpha 5 / 6: 1.0 \t [ 0.1283001   0.10427815  0.1345786 ]\n",
      "\t\talpha 6 / 6: 4.0 \t [ 0.02963815  0.01150946  0.03423441]\n",
      "\tl2 gamma 3 / 4: 0.1621\n",
      "\t\talpha 1 / 6: 0.0078125 \t [ 0.98325221  0.98147808  0.96896823]\n",
      "\t\talpha 2 / 6: 0.015625 \t [ 0.96648322  0.96092088  0.95684321]\n",
      "\t\talpha 3 / 6: 0.0625 \t [ 0.88119356  0.85801448  0.89254499]\n",
      "\t\talpha 4 / 6: 0.25 \t [ 0.68082137  0.64017482  0.70594108]\n",
      "\t\talpha 5 / 6: 1.0 \t [ 0.370789   0.3348852  0.3852916]\n",
      "\t\talpha 6 / 6: 4.0 \t [ 0.1276767   0.10385361  0.13391809]\n",
      "\tl2 gamma 4 / 4: 0.3241\n",
      "\t\talpha 1 / 6: 0.0078125 \t [ 0.99126925  0.99096328  0.9758109 ]\n",
      "\t\talpha 2 / 6: 0.015625 \t [ 0.98309079  0.98126885  0.96893928]\n",
      "\t\talpha 3 / 6: 0.0625 \t [ 0.93434939  0.92145087  0.93408128]\n",
      "\t\talpha 4 / 6: 0.25 \t [ 0.79701186  0.76315473  0.8188684 ]\n",
      "\t\talpha 5 / 6: 1.0 \t [ 0.52994289  0.48929257  0.55134852]\n",
      "\t\talpha 6 / 6: 4.0 \t [ 0.22805858  0.19894332  0.23710312]\n",
      "l1 gamma 3 / 4: 121.0\n",
      "\tl2 gamma 1 / 4: 0.006552\n",
      "\t\talpha 1 / 6: 0.0078125 \t [ 0.59008066  0.54844952  0.61324882]\n",
      "\t\talpha 2 / 6: 0.015625 \t [ 0.43084104  0.39261253  0.44779727]\n",
      "\t\talpha 3 / 6: 0.0625 \t [ 0.16134347  0.13547177  0.16838393]\n",
      "\t\talpha 4 / 6: 0.25 \t [ 0.04036663  0.02144411  0.04510735]\n",
      "\t\talpha 5 / 6: 1.0 \t [ 0.0038847  -0.01279122  0.00825952]\n",
      "\t\talpha 6 / 6: 4.0 \t [-0.00566876 -0.02163579 -0.00138511]\n",
      "\tl2 gamma 2 / 4: 0.02621\n",
      "\t\talpha 1 / 6: 0.0078125 \t [ 0.83080074  0.79987327  0.84862107]\n",
      "\t\talpha 2 / 6: 0.015625 \t [ 0.72747294  0.68839863  0.75177899]\n",
      "\t\talpha 3 / 6: 0.0625 \t [ 0.4306952   0.39248634  0.44765038]\n",
      "\t\talpha 4 / 6: 0.25 \t [ 0.16126049  0.13540816  0.16829858]\n",
      "\t\talpha 5 / 6: 1.0 \t [ 0.04035006  0.02146358  0.04508471]\n",
      "\t\talpha 6 / 6: 4.0 \t [ 0.00392248 -0.01263198  0.008274  ]\n",
      "\tl2 gamma 3 / 4: 0.1048\n",
      "\t\talpha 1 / 6: 0.0078125 \t [ 0.94530131  0.93322669  0.94071526]\n",
      "\t\talpha 2 / 6: 0.015625 \t [ 0.90111136  0.88029346  0.9076435 ]\n",
      "\t\talpha 3 / 6: 0.0625 \t [ 0.72700472  0.6879654   0.75138133]\n",
      "\t\talpha 4 / 6: 0.25 \t [ 0.43011198  0.39198175  0.44706291]\n",
      "\t\talpha 5 / 6: 1.0 \t [ 0.16092904  0.13515403  0.16795764]\n",
      "\t\talpha 6 / 6: 4.0 \t [ 0.04028344  0.02153968  0.04499407]\n",
      "\tl2 gamma 4 / 4: 0.2096\n",
      "\t\talpha 1 / 6: 0.0078125 \t [ 0.97034964  0.96425102  0.95838798]\n",
      "\t\talpha 2 / 6: 0.015625 \t [ 0.94508432  0.93298604  0.94062706]\n",
      "\t\talpha 3 / 6: 0.0625 \t [ 0.82997094  0.79905935  0.84805169]\n",
      "\t\talpha 4 / 6: 0.25 \t [ 0.5886217   0.54715845  0.61184844]\n",
      "\t\talpha 5 / 6: 1.0 \t [ 0.27767896  0.24596812  0.28839051]\n",
      "\t\talpha 6 / 6: 4.0 \t [ 0.08427846  0.06296932  0.08963635]\n",
      "l1 gamma 4 / 4: 484.0\n",
      "\tl2 gamma 1 / 4: 0.004618\n",
      "\t\talpha 1 / 6: 0.0078125 \t [ 0.35031579  0.31512126  0.36359181]\n",
      "\t\talpha 2 / 6: 0.015625 \t [ 0.21405404  0.18534118  0.22243785]\n",
      "\t\talpha 3 / 6: 0.0625 \t [ 0.0590918   0.03903424  0.06403364]\n",
      "\t\talpha 4 / 6: 0.25 \t [ 0.00903746 -0.00798812  0.01344722]\n",
      "\t\talpha 5 / 6: 1.0 \t [ -4.38927273e-03  -2.05560712e-02  -7.67348200e-05]\n",
      "\t\talpha 6 / 6: 4.0 \t [-0.0077666  -0.02360415 -0.0034969 ]\n",
      "\tl2 gamma 2 / 4: 0.01847\n",
      "\t\talpha 1 / 6: 0.0078125 \t [ 0.65892488  0.61743994  0.68291129]\n",
      "\t\talpha 2 / 6: 0.015625 \t [ 0.50890343  0.4683392   0.52877418]\n",
      "\t\talpha 3 / 6: 0.0625 \t [ 0.21399975  0.18529711  0.22238288]\n",
      "\t\talpha 4 / 6: 0.25 \t [ 0.05907455  0.03902952  0.06401532]\n",
      "\t\talpha 5 / 6: 1.0 \t [ 0.00904342 -0.00794874  0.01344782]\n",
      "\t\talpha 6 / 6: 4.0 \t [ -4.34596401e-03  -2.03923785e-02  -5.60242740e-05]\n",
      "\tl2 gamma 3 / 4: 0.07389\n",
      "\t\talpha 1 / 6: 0.0078125 \t [ 0.86410064  0.83618152  0.87608821]\n",
      "\t\talpha 2 / 6: 0.015625 \t [ 0.77854721  0.74208114  0.79987677]\n",
      "\t\talpha 3 / 6: 0.0625 \t [ 0.50859409  0.46807412  0.52846942]\n",
      "\t\talpha 4 / 6: 0.25 \t [ 0.21378271  0.18512098  0.22216313]\n",
      "\t\talpha 5 / 6: 1.0 \t [ 0.05900562  0.03901061  0.0639421 ]\n",
      "\t\talpha 6 / 6: 4.0 \t [ 0.00906677 -0.00779334  0.01344993]\n",
      "\tl2 gamma 4 / 4: 0.1478\n",
      "\t\talpha 1 / 6: 0.0078125 \t [ 0.91993713  0.90062585  0.92032128]\n",
      "\t\talpha 2 / 6: 0.015625 \t [ 0.86387362  0.83596879  0.87594703]\n",
      "\t\talpha 3 / 6: 0.0625 \t [ 0.6582745  0.6168746  0.6823209]\n",
      "\t\talpha 4 / 6: 0.25 \t [ 0.34957302  0.31449283  0.36284128]\n",
      "\t\talpha 5 / 6: 1.0 \t [ 0.1174891   0.09412142  0.1234212 ]\n",
      "\t\talpha 6 / 6: 4.0 \t [ 0.02630513  0.00841186  0.03084043]"
     ]
    },
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "CPU times: user 28.1 s, sys: 22.9 s, total: 51 s\n",
      "Wall time: 3.79 s\n"
     ]
    },
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "\n"
     ]
    }
   ],
   "source": [
    "%%time\n",
    "\n",
    "K = np.empty((n, n), dtype=samps[0].dtype)\n",
    "for l1_gamma_i, l1_gamma in enumerate(l1_gamma_mults * med_2):\n",
    "    print(\"l1 gamma {} / {}: {:.4}\".format(l1_gamma_i + 1, len(l1_gamma_mults), l1_gamma), file=sys.stderr)\n",
    "    D2_mmd = mmds[l1_gamma_i]\n",
    "    \n",
    "    # get the median of *these* squared distances,\n",
    "    # to scale the bandwidth of the outer RBF kernel\n",
    "    mmd_med2 = np.median(D2_mmd[np.triu_indices_from(D2_mmd, k=1)])\n",
    "    \n",
    "    for l2_gamma_i, l2_gamma in enumerate(l2_gamma_mults * mmd_med2):\n",
    "        print(\"\\tl2 gamma {} / {}: {:.4}\".format(l2_gamma_i + 1, len(l2_gamma_mults), l2_gamma), file=sys.stderr)\n",
    "        np.multiply(D2_mmd, -l2_gamma, out=K)\n",
    "        np.exp(K, out=K)\n",
    "        \n",
    "        for alpha_i, alpha in enumerate(alphas):\n",
    "            ridge = KernelRidge(alpha=alpha, kernel='precomputed')\n",
    "            these = cv.cross_val_score(ridge, K, mean, cv=k_fold)\n",
    "            scores[l1_gamma_i, l2_gamma_i, alpha_i, :] = these\n",
    "            print(\"\\t\\talpha {} / {}: {} \\t {}\".format(alpha_i + 1, len(alphas), alpha, these), file=sys.stderr)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 11,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "mean_scores = scores.mean(axis=-1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "import seaborn as sns"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "image/png": "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\nD32803in/vRoAAAAAElFTkSuQmCC\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fadd8048a90>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "import matplotlib.ticker as ticker\n",
    "\n",
    "fig = plt.figure(figsize=(8, 15))\n",
    "for i in range(len(l1_gamma_mults)):\n",
    "    ax = fig.add_subplot(len(l1_gamma_mults), 1, i+1)\n",
    "    cax = ax.matshow(mean_scores[i, :, :], vmin=0, vmax=1)\n",
    "    \n",
    "    ax.set_yticklabels([''] + ['{:.3}'.format(g * mmd_med2) for g in l2_gamma_mults])\n",
    "    ax.set_xticklabels([''] + ['{:.3}'.format(a) for a in alphas])\n",
    "    ax.xaxis.set_major_locator(ticker.MultipleLocator(1))\n",
    "    ax.yaxis.set_major_locator(ticker.MultipleLocator(1))\n",
    "    \n",
    "    fig.colorbar(cax)\n",
    "    ax.set_title(\"L1 gamma: {}\".format(l1_gamma_mults[i] * med_2))\n",
    "plt.tight_layout()"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Looking at these results, the best results are with the lowest alpha, lowest L1 gamma, and highest L2 gamma. So if we were really trying to solve this as best as possible, we'd maybe want to try lower alphas / lower L1 gammas / higher L2 gammas. But, whatever; let's just use the best of the ones we did try for now."
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "best_l1_gamma_i, best_l2_gamma_i, best_alpha_i = np.unravel_index(mean_scores.argmax(), mean_scores.shape)\n",
    "best_l1_gamma = l1_gamma_mults[best_l1_gamma_i] * med_2\n",
    "best_l2_gamma = l2_gamma_mults[best_l2_gamma_i] * mmd_med2\n",
    "best_alpha = alphas[best_alpha_i]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(0, 3, 0)"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "best_l1_gamma_i, best_l2_gamma_i, best_alpha_i"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "(7.5621827082571507, 0.14778624920765476, 0.0078125)"
      ]
     },
     "execution_count": 15,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "best_l1_gamma, best_l2_gamma, best_alpha"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Now, train a model on the full training set:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "KernelRidge(alpha=0.0078125, coef0=1, degree=3, gamma=None,\n",
       "      kernel='precomputed', kernel_params=None)"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# get the training kernel\n",
    "D2_mmd = mmds[best_l1_gamma_i]\n",
    "np.multiply(D2_mmd, -best_l2_gamma, out=K)\n",
    "np.exp(K, out=K)\n",
    "\n",
    "ridge = KernelRidge(alpha=best_alpha, kernel='precomputed')\n",
    "ridge.fit(K, mean)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "To evaluate on new data:"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 18,
   "metadata": {
    "collapsed": true
   },
   "outputs": [],
   "source": [
    "# generate some test data from the same distribution\n",
    "t_n = 100\n",
    "t_mean = np.random.normal(0, 10, size=t_n)\n",
    "t_var = np.random.gamma(5, size=t_n)\n",
    "t_n_samp = np.random.randint(10, 500, size=t_n)\n",
    "t_samps = [np.random.normal(m, v, size=s)[:, np.newaxis]\n",
    "           for m, v, s in zip(t_mean, t_var, t_n_samp)]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "RBF mean map kernel:\n",
      " 50,100 of 50,100 (100%) |#############################################################| Time: 0:00:36\n",
      "\n"
     ]
    }
   ],
   "source": [
    "# get the kernel from the training data to the test data\n",
    "t_K = mmd.rbf_mmd(t_samps, samps, gammas=best_l1_gamma, squared=True,\n",
    "                  Y_diag=mmk_diags[best_l1_gamma_i], n_jobs=20)\n",
    "t_K *= -best_l2_gamma\n",
    "np.exp(t_K, out=t_K);"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {
    "collapsed": false
   },
   "outputs": [],
   "source": [
    "preds = ridge.predict(t_K)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 21,
   "metadata": {
    "collapsed": false
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "<matplotlib.collections.PathCollection at 0x7fab400e2710>"
      ]
     },
     "execution_count": 21,
     "metadata": {},
     "output_type": "execute_result"
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<matplotlib.figure.Figure at 0x7fadd80afd10>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.figure(figsize=(5, 5))\n",
    "plt.scatter(t_mean, preds)"
   ]
  },
  {
   "cell_type": "markdown",
   "metadata": {},
   "source": [
    "Pretty good predictions!"
   ]
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 2",
   "language": "python",
   "name": "python2"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 2
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython2",
   "version": "2.7.11"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 0
}
